PowerTCP Mail for .NET
BeginRead(Byte[],Byte[],Int32,Int32,Boolean,AsyncCallback,Object) Method
See Also  Example Send comments on this topic.
Dart.PowerTCP.Mail Namespace > SegmentedStream Class > BeginRead Method : BeginRead(Byte[],Byte[],Int32,Int32,Boolean,AsyncCallback,Object) Method




buffer
The storage location for the received data.
delimiter
The token that is used to determine a segment was read.
offset
The zero-based position in the buffer at which to store the received data.
count
The maximum number of bytes to read.
found
callback
The AsyncCallback delegate to be called when the operation is complete.
state
An object containing state information for this operation.
Begins an asynchronous read from the stream that completes when the provided delimiter is found, count bytes have been read, or end of stream is reached.

Syntax

Visual Basic (Declaration) 
Public Overloads Overridable Function BeginRead( _
   ByVal buffer() As Byte, _
   ByVal delimiter() As Byte, _
   ByVal offset As Integer, _
   ByVal count As Integer, _
   ByRef found As Boolean, _
   ByVal callback As AsyncCallback, _
   ByVal state As Object _
) As IAsyncResult
Visual Basic (Usage)Copy Code
Dim instance As SegmentedStream
Dim buffer() As Byte
Dim delimiter() As Byte
Dim offset As Integer
Dim count As Integer
Dim found As Boolean
Dim callback As AsyncCallback
Dim state As Object
Dim value As IAsyncResult
 
value = instance.BeginRead(buffer, delimiter, offset, count, found, callback, state)
C# 
public virtual IAsyncResult BeginRead( 
   byte[] buffer,
   byte[] delimiter,
   int offset,
   int count,
   ref bool found,
   AsyncCallback callback,
   object state
)
Managed Extensions for C++ 
public: virtual IAsyncResult* BeginRead( 
   byte[]* buffer,
   byte[]* delimiter,
   int offset,
   int count,
   ref bool found,
   AsyncCallback* callback,
   Object* state
) 
C++/CLI 
public:
virtual IAsyncResult^ BeginRead( 
   array<byte>^ buffer,
   array<byte>^ delimiter,
   int offset,
   int count,
   bool% found,
   AsyncCallback^ callback,
   Object^ state
) 

Parameters

buffer
The storage location for the received data.
delimiter
The token that is used to determine a segment was read.
offset
The zero-based position in the buffer at which to store the received data.
count
The maximum number of bytes to read.
found
callback
The AsyncCallback delegate to be called when the operation is complete.
state
An object containing state information for this operation.

Return Value

An IAsyncResult representing the asynchronous operation. To determine how many bytes were read, you must pass this IAsyncResult to the EndRead method of the stream. This should be done within your AsyncCallback event handler.

Exceptions

ExceptionDescription
System.IO.IOExceptionThrown when the stream is not Readable.
System.ArgumentNullExceptionThrown when the buffer, delimiter or callback is null.
System.ArgumentOutOfRangeExceptionThrown when the offset is less than zero or when count is less than or equal to zero.
System.ArgumentExceptionThrown when the (offset + count) > buffer.Length, or delimiter.Length == 0, or delimiter.length > count.

Example

The following example demonstrates asynchronously reading from the server using the stream interface. This involves creating a callback method in which the response is handled. If you would like to use fully asynchronous methods with events already implemented, try the low-level interface (Tcp.BeginRead & Tcp.BeginWrite).
C#Copy Code
private void AsynchronousReadTest()
{
   // Connect to the server
   tcp1.Connect("atropos", 13);

   // DAYTIME protocol (port 13) sends data and closes, receive data.
   // This demonstrates receiving data asynchronously using the stream interface.
			
   // data buffer is a global variable
   databuffer = new byte[tcp1.ReceiveBufferSize];

   // Begin the asynchronous Read operation.
   tcp1.Stream.BeginRead(databuffer, 0, tcp1.ReceiveBufferSize, new System.AsyncCallback(MyCallback), null);
}

private void MyCallback(System.IAsyncResult ar)
{
   // End pending asynchronous request.
   if(ar.IsCompleted)
      tcp1.Stream.EndRead(ar);

   // Write result
   Debug.WriteLine(System.Text.Encoding.Default.GetString(databuffer));
}

Remarks

The purpose of this method is to provide a convenient way to read a variable-length record from the stream. The EndRead method should be called when your AsyncCallback delegate is raised.

Requirements

Target Platforms: Microsoft .NET Framework 2.0

See Also

Documentation Version 3.2
© 2010 Dart Communications. All Rights Reserved.